#ifndef CKKS_SRC_KEY_H_
#define CKKS_SRC_KEY_H_

#include <cstdint>
#include <vector>

using namespace std;
class Key {
public:
    uint64_t *ax;
    uint64_t *bx;

    // 构造函数
    Key(uint64_t *ax, uint64_t *bx);
    // 拷贝构造函数
    Key() = default;
    Key(const Key &key) = default;
    Key &operator = (const Key &key) = default;
    // 移动构造函数
    Key(Key &&key) = default;
    Key &operator = (Key &&key) = default;
    virtual ~Key();
};


class SwitchKey {
public:
    std::vector<std::vector<std::vector<uint64_t>>> rax;
    std::vector<std::vector<std::vector<uint64_t>>> rbx;
    SwitchKey() = default; // 添加默认构造函数
    SwitchKey(const std::vector<std::vector<std::vector<uint64_t>>> &rax,
        const std::vector<std::vector<std::vector<uint64_t>>> &rbx);

    SwitchKey(const SwitchKey &key) = default;
    SwitchKey &operator = (const SwitchKey &key) = default;
    SwitchKey(SwitchKey &&key) = default;
    SwitchKey &operator = (SwitchKey &&key) = default;

    virtual ~SwitchKey();
};

#endif /* CKKSNTT_KEY_H_ */
